From 588ee411ad82b890263d3f56af801681954dfc2c Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Sat, 6 Oct 2012 15:54:10 -0400 Subject: [PATCH] cssimage: Fix gradient start/end computation This computation is only supposed to happen for repeating gradients, not for all of them. --- gtk/gtkcssimagelinear.c | 42 ++++++++++++++++++++++++----------------- 1 file changed, 25 insertions(+), 17 deletions(-) diff --git a/gtk/gtkcssimagelinear.c b/gtk/gtkcssimagelinear.c index bd80d5f835..b09131d423 100644 --- a/gtk/gtkcssimagelinear.c +++ b/gtk/gtkcssimagelinear.c @@ -40,28 +40,36 @@ gtk_css_image_linear_get_start_end (GtkCssImageLinear *linear, double pos; guint i; - stop = &g_array_index (linear->stops, GtkCssImageLinearColorStop, 0); - if (stop->offset == NULL) - *start = 0; - else - *start = _gtk_css_number_value_get (stop->offset, length) / length; - - *end = *start; - - for (i = 0; i < linear->stops->len; i++) + if (linear->repeating) { - stop = &g_array_index (linear->stops, GtkCssImageLinearColorStop, i); - + stop = &g_array_index (linear->stops, GtkCssImageLinearColorStop, 0); if (stop->offset == NULL) - continue; + *start = 0; + else + *start = _gtk_css_number_value_get (stop->offset, length) / length; - pos = _gtk_css_number_value_get (stop->offset, length) / length; + *end = *start; - *end = MAX (pos, *end); + for (i = 0; i < linear->stops->len; i++) + { + stop = &g_array_index (linear->stops, GtkCssImageLinearColorStop, i); + + if (stop->offset == NULL) + continue; + + pos = _gtk_css_number_value_get (stop->offset, length) / length; + + *end = MAX (pos, *end); + } + + if (stop->offset == NULL) + *end = MAX (*end, 1.0); + } + else + { + *start = 0; + *end = 1; } - - if (stop->offset == NULL) - *end = MAX (*end, 1.0); } static void -- 2.30.2